package com.irdstudio.basic.sequence.service.facade;

import com.irdstudio.basic.sequence.service.PatternDescriptor;

/**
 * @description:在无分类序列号服务（SeqService）、
 * 				有分类-可循环序列号服务（LimitableSeqService）的基础上增加了
 * 				解析Pattern字符串的功能
 * @date:2019年2月13日 下午5:14:31
 * @author:hengyh
 */
public interface PatternedLimitableSeqService extends SeqService, LimitableSeqService {

    /**
     * 获取无业务分类、可替换模板的序列号
     * @param patternStr pattern字符串
     * @param seqLength 序列部分的长度
     * @return
     */
    String getPatternedSequence(String patternStr);

    /**
     * 获取无业务分类、可替换模板的序列号
     * @param descriptor
     * @return
     */
    String getPatternedSequence(PatternDescriptor descriptor);

    /**
     * 获取指定业务分类、可替换模板的序列号
     * @param key 业务类型
     * @param patternStr pattern字符串
     * @param seqLength 序列部分的长度
     * @return
     */
    String getPatternedSequence(String key, String patternStr, Integer seqLength);

    /**
     * 获取指定业务分类、可替换模板的序列号
     * @param key 业务类型
     * @param descriptor
     * @return
     */
    String getPatternedSequence(String key, PatternDescriptor descriptor);
}
